home *** CD-ROM | disk | FTP | other *** search
- /*****************************************************************************
- MODULE: rputf.c
- PURPOSE: recio character delimited floating point output functions
- COPYRIGHT: (C) 1994 William Pierpoint
- COMPILER: Borland C Version 3.1
- OS: MSDOS Version 6.2
- VERSION: 2.02
- RELEASE: May 5, 1994
- *****************************************************************************/
-
- #include <float.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- #include "recio.h"
-
- extern char *dtoa(double d, int dig, char *str);
- extern int _rstatus(REC *rp, int mode);
- extern int _rputc(REC *rp, int ch);
-
- #define rfp(rp) ((rp)->r_fp)
- #define rcol(rp) ((rp)->r_colno)
- #define rfldch(rp) ((rp)->r_fldch)
-
- /****************************************************************************/
- static int /* return 0 on success; !0 on error */
- _rputd( /* output floating point number to rec stream */
- REC *rp, /* pointer to record stream */
- int dig, /* number of significant digits */
- double num) /* floating point number */
- /****************************************************************************/
- {
- int err=EOF; /* return error (0=no error; !0=error) */
- if (!_rstatus(rp, R_WRITE)) {
- rfldno(rp)++;
- /* if not first field, put field separator */
- if (rfldno(rp) > 1) {
- err = _rputc(rp, rfldch(rp));
- if (err) goto done;
- }
- dtoa(num, dig, _r_nsbuf);
- err = fputs(_r_nsbuf, rfp(rp));
- if (err==EOF) {
- rseterr(rp, R_ENOPUT);
- goto done;
- } else {
- rcol(rp) += strlen(_r_nsbuf);
- err = 0;
- goto done;
- }
- }
- done:
- return err;
- }
-
-
- /****************************************************************************/
- /* character delimited floating point output functions */
- /****************************************************************************/
- int rputf(REC *rp, float num)
- {
- return _rputd(rp, FLT_DIG, (double) num);
- }
-
- int rputd(REC *rp, double num)
- {
- return _rputd(rp, DBL_DIG, num);
- }
-